<template>
  <header class="header">
    <h1>todos</h1>
   
    <input v-model="checkAll" id="toggle-all" class="toggle-all" type="checkbox" />
    <label for="toggle-all"></label>
    <input
      class="new-todo"
      placeholder="输入任务名称-回车确认"
      autofocus
      v-model.trim="task"
      @keyup.enter="add"
    />
  </header>
</template>

<script>
export default {
  props: {
    list: {
      type:Array,
      required: true
    }
  },
  data() {
    return {
      task: ''
    }
  },
  methods: {
    add () {
      // 非空判断
      if (this.task === '') return alert('请输入任务内容')
      // 能来到这代表不为空
      // 把输入的内容加到数组里，但是数组不能直接加，子通知父来加
      this.$emit('add', this.task)
      // 清空
      this.task = ''
    }
  },

  computed: {
    checkAll: {
      get () {
        return this.list.every(v => v.isDone)
      },

      set (val) {
        // 其实我们并没有改父组件传递过来的数据 - 如果没有开启标准的eslint规范
        // 这句话没问题，因为你没有改props的数据，而且也不会报错
        // 但是如果ESLint开的严谨一点，那么eslint也会报错
        // this.list.forEach(v => v.isDone = val)

        // 通知父来改
        this.$emit('doCheck', val)
      }
    }
  }
}
</script>